var express = require("express");           //express框架
var compression = require("compression");   //性能优化：nodejs开启gzip压缩，使用compression包
var path = require('path');                 //path模块：Node.js提供的，处理本地文件目录需要使用它，可以方便地构造目录，可以正确处理操作系统相关的文件路径
var bodyParser = require('body-parser');    //express中间件，作用是对post请求的请求体进行解析，node.js 中间件，用于处理 JSON, Raw, Text 和 URL 编码的数据
var sqlite3 = require('sqlite3').verbose(); //
var fs = require("fs");                     //
var formidable = require("formidable");     //formidable模块实现了上传和编码图片和视频。它支持GB级上传数据处理，支持多种客户端数据提交。有极高的测试覆盖率，非常适合在生产环境中使用
var moment = require("moment");             //JavaScript 日期处理类库
var crypto = require("crypto");             //加密
const readline = require('readline');       //readline 模块提供了一个接口，用于一次一行地读取可读流（例如 process.stdin）中的数据。

var db = new sqlite3.Database(__dirname + '/db/cms.db');  //一定使用绝对路径，否则找不到数据文件
var typeDetect = require("./tools/typeDetect");

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(compression());




//引入路由
// const indexRouter = require('./routes/index'``);
const loginRouter = require('./routes/login');
const homeRouter = require('./routes/home');
// app.use('/', indexRouter);
app.use('/login', loginRouter);
app.use('/home', homeRouter);


//访问静态资源
app.use(express.static(path.join(__dirname, 'public'), { "index": ["login.html"] }));
app.use('/sourcepic', express.static(path.join(__dirname, 'source')))

//访问单页
app.get("*", function (req, res, next) {
    // console.log(req.url);
    next();
})

// // 访问静态资源
// app.use(express.static(path.resolve(__dirname, '../dist')));

// // 访问单页
// app.get('*', function (req, res) {
//   var html = fs.readFileSync(path.resolve(__dirname, '../dist/index.html'), 'utf-8');
//   res.send(html);
// });


//设置允许跨域访问该服务.
app.all('*', function (req, res, next) {
    // console.log(req.url.path);
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', '*');
    res.header('Content-Type', 'application/json;charset=utf-8');
    next();
});

let rtn = {             //交互的信息
    rtnFlag: "EMPTY",   //rtn的状态
    msg: "",            //返回的信息
    storObj: {          //仓库对象 返回的数据
        stuID: "",      //登录ID
        CurrIp: ""      //当前登录IP
    }
};


//服务器开启时间；
global.severStartTime = '';
//签到开启时间；
global.signStartTime ='';
//迟到阈值
global.beLateTime = '';
//旷课阈值
global.beMissTime = '';
//上课时长，默认100分钟
global.classDuration = 60*100*60;

//服务器
var server = app.listen(8899, function () {
    var aaaa = '11';
    //把每个人能否修改IP变为0，0为不能 1为能；
    // db.all("update tb_Online set flag = 0 ", function () { });
    //获取服务器IP地址和端口
    var host = require("./Tools/getLocalIp");
    var port = server.address().port;

    //获取服务器开启时间
    severStartTime = moment().format('YYYY-MM-DD HH:mm:ss');
    var loginDuration  = atime.diff(severStartTime,"second");

    console.log("服务器地址： http://%s:%s", host, port);
    console.log("server is listening...");

    //分割为 时 分 秒 便于比较；
    var Newmytime = severStartTime.split(":");
    // console.log(mytime0);

    //服务器开始时间   获取当前时间并用":"将其分割为时 分 秒以便于比较使用
    var New_serverStartTime2 = new Date().toLocaleTimeString().split(":");

    // db.all("select * FROM tb_Online ", function (err, data) {
    //     console.log("data: " + data);
    //     console.dir("data-dir: " + data);

    //     if (!err && data.length != 0) {
    //         //OldTime[0]为时长 OldTime[1]为分长 OldTime[2]为秒数
    //         var OldTime = data[0].starttime.split(":");
    //         //重启时判断，时长是否超过课堂时间，超过就清空数据库
    //         if (Newmytime[0] - OldTime[0] > ClassTime || (Newmytime[0] - OldTime[0] == ClassTime && Newmytime[1] - OldTime[1] > 0)) {
    //             db.all("DELETE FROM tb_Online ", function (err, data) { })
    //         }
    //         //不满足条件时就把时间变为上次开启的时间；
    //         else {
    //             severStartTime = data[0].starttime
    //         }
    //     }

    // })


    



    // const rl = readline.createInterface({
    //     input: process.stdin,
    //     output: process.stdout,
    //     prompt: '请输入> '
    // });

    // const writeTxt = [];
    // writeTxt[0] = "*签到设置            请输入：1";
    // writeTxt[1] = "*临时登录设置        请输入：2";
    // writeTxt[2] = "*退出系统            请按：Ctrl + D";
    // writeTxt[3] = "*请选择……";
    // console.log(writeTxt);

    // rl.prompt();
    // while (1) {
    //     writeTxt.forEach(i => {
    //         rl.write(writeTxt[i]);
    //     });

    //     rl.on('line', (line) => {
    //         switch (line.trim()) {
    //             case '1':
    //                 console.log('1!');
    //                 break;
    //             case '2':
    //                 console.log('2!');
    //                 break;
    //             case '3':
    //                 console.log('3!');
    //                 break;
    //             case '4':
    //                 console.log('!');
    //                 break;
    //             default:
    //                 // console.log(`你输入的是：'${line.trim()}'`);
    //                 console.log("输入错误，请重新输入！");
    //                 break;
    //         }
    //         rl.prompt();
    //     }).on('close', () => {
    //         console.log('再见!');
    //         // process.exit(0);
    //     });
    // }



})
